home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / general / hdf / unix / hdf3_2r2.lha / HDF3.2r2 / bkwdtest / rs3.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-10-29  |  8.4 KB  |  219 lines

  1. /***************************************************************************
  2. *
  3. *
  4. *                         NCSA HDF version 3.2r2
  5. *                            October 30, 1992
  6. *
  7. * NCSA HDF Version 3.2 source code and documentation are in the public
  8. * domain.  Specifically, we give to the public domain all rights for future
  9. * licensing of the source code, all resale rights, and all publishing rights.
  10. *
  11. * We ask, but do not require, that the following message be included in all
  12. * derived works:
  13. *
  14. * Portions developed at the National Center for Supercomputing Applications at
  15. * the University of Illinois at Urbana-Champaign, in collaboration with the
  16. * Information Technology Institute of Singapore.
  17. *
  18. * THE UNIVERSITY OF ILLINOIS GIVES NO WARRANTY, EXPRESSED OR IMPLIED, FOR THE
  19. * SOFTWARE AND/OR DOCUMENTATION PROVIDED, INCLUDING, WITHOUT LIMITATION,
  20. * WARRANTY OF MERCHANTABILITY AND WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE
  21. *
  22. ****************************************************************************
  23. */
  24.  
  25. #include <string.h>
  26. #include "../include/hdf.h"
  27.  
  28. int32 ret, n, i, j, k, rank=3;
  29. int32 np=2,            /* dimension sizes  */
  30.       nr=3,
  31.       nc=4,
  32.       num= 3;            /* number of SDGs in notran.hdf  */    
  33. char *lpln = "Time",         /* luf for planes, rows and cols  */
  34.      *upln = "Second", 
  35.      *fpln = "Int32",
  36.      *lrow = "Line",
  37.      *urow = "Inch",
  38.      *frow = "Int16",    
  39.      *lcol = "Column",
  40.      *ucol = "Cm",
  41.      *fcol = "Int32";
  42.  
  43. float32 scpln[2]={ 0.0, 100.0},    /* scales for planes, rows, and cols */
  44.     scrow[3]={0.0, 10.0, 20.0},
  45.     sccol[4]={0.0, 1.0, 2.0, 3.0},
  46.         maxi=123.0,
  47.         mini = -1.0;
  48.  
  49. float32 da[2][3][4]={{{   0.0,   1.0,   2.0,   3.0},  /* data array in memory  */
  50.               {  10.0,  11.0,  12.0,  13.0},
  51.               {  20.0,  21.0,  22.0,  23.0}},
  52.              {{ 100.0, 101.0, 102.0, 103.0},
  53.               { 110.0, 111.0, 112.0, 113.0},
  54.               { 120.0, 121.0, 122.0, 123.0}}};
  55.  
  56. float32 ida[3][2][3][4], tmpda[4][3][2],iscpln[3][4], iscrow[3][4], 
  57.         isccol[3][4], imaxi[3], imini[3];
  58. char il[3][3][12], iu[3][3][12], ifm[3][3][12];
  59. int32 di[3]={2,3,4},        /* dims */
  60.       wdi[3],            /* windims  */
  61.       idi[3][3], tmpdi[3], irank[3];
  62. int num_err=0, data_err=0;
  63.  
  64. char *fn="bctest.hdf";
  65.  
  66.  
  67. main()
  68.  
  69. {
  70.     int ispre32;
  71.     int32  fid;
  72.  
  73.     fid=Hopen(fn, DFACC_READ,0);
  74.     for (n=0; n<3; n++)    {
  75.          ret = DFSDgetdims(fn, &(irank[n]), idi[n], 3);        
  76.         num_err += ret;
  77.         ispre32 = DFSDpre32();
  78.         if (ispre32) {
  79.            int nt, n_ntsize, isfortran=0;
  80.            
  81.            printf("SDG%1d was written by old HDF. \n",n);
  82.            if (n != 2) num_err--;
  83.            for (i=0; i<rank; i++)   
  84.                tmpdi[i] = idi[n][i]; /* get idi[n] ready for reverse */
  85.            for (i=1; i<=rank; i++)      {
  86.                ret = DFSDgetdimstrs(rank-i+1, il[n][i-1], iu[n][i-1], ifm[n][i-1]);
  87.                num_err += ret;
  88.            }
  89.            ret = DFSDgetdimscale(3, tmpdi[2], iscpln[n]);
  90.            num_err += ret;
  91.            ret = DFSDgetdimscale(2, tmpdi[1], iscrow[n]);
  92.            num_err += ret;
  93.            ret = DFSDgetdimscale(1, tmpdi[0], isccol[n]);
  94.            num_err += ret;
  95.            ret = DFSDgetdata(fn, irank[n], tmpdi, tmpda);
  96.            num_err += ret;
  97.            ret = DFSDgetNT(&nt);
  98.            num_err += ret;
  99.            n_ntsize = DFKNTsize(nt | DFNT_NATIVE);
  100.            if (n_ntsize <0) num_err += n_ntsize;
  101.            ret = transar(&rank, tmpdi, idi[n], &n_ntsize, tmpda, ida[n],&isfortran);
  102.            num_err += ret;
  103.         }
  104.         else {
  105.            printf("SDG%1d was written by new HDF. \n",n);
  106.            if (n == 2) num_err--;
  107.            for (i=1; i<=rank; i++)     {
  108.            ret = DFSDgetdimstrs(i, il[n][i-1], iu[n][i-1], ifm[n][i-1]);
  109.                num_err += ret;
  110.            }
  111.            ret = DFSDgetdimscale(1, idi[n][0], iscpln[n]);
  112.            num_err += ret;
  113.            ret = DFSDgetdimscale(2, idi[n][1], iscrow[n]);
  114.            num_err += ret;
  115.            ret = DFSDgetdimscale(3, idi[n][2], isccol[n]);
  116.            num_err += ret;
  117.            ret = DFSDgetdata(fn, irank[n], idi[n], ida[n]);    
  118.            num_err += ret;
  119.         }
  120.            ret = DFSDgetrange(&(imaxi[n]), &(imini[n]));
  121.            num_err += ret;
  122.         if (irank[n] != rank) data_err++;
  123.         for (i=0;i<rank; i++)   {
  124.             if (idi[n][i] != di[i]) data_err++;
  125.             if (imaxi[n] != maxi) data_err++;
  126.             if (imini[n] != mini) data_err++;
  127.         }
  128.         for (i=0;i<np; i++)    {
  129.             if (iscpln[n][i] != scpln[i]) data_err++;
  130.         }
  131.         for (i=0; i< nr; i++)   {
  132.             if (iscrow[n][i] != scrow[i]) data_err++;
  133.         }
  134.         for (i=0; i<nc; i++)    {
  135.             if (isccol[n][i] != sccol[i]) data_err++;
  136.         } 
  137.         if (strncmp(il[n][0],lpln,4) != 0) data_err++;
  138.         if (strncmp(il[n][1],lrow,4) != 0) data_err++;
  139.         if (strncmp(il[n][2],lcol,6) != 0) data_err++;
  140.         if (strncmp(iu[n][0],upln,6) != 0) data_err++;
  141.         if (strncmp(iu[n][1],urow,4) != 0) data_err++;
  142.         if (strncmp(iu[n][2],ucol,2) != 0) data_err++;
  143.         if (strncmp(ifm[n][0],fpln,5) != 0) data_err++;
  144.         if (strncmp(ifm[n][1],frow,5) != 0) data_err++;
  145.         if (strncmp(ifm[n][2],fcol,5) != 0) data_err++;
  146.         for (i=0; i<np; i++)
  147.             for (j=0; j<nr; j++)
  148.                 for (k=0; k<nc; k++)
  149.                     if (da[i][j][k] != ida[n][i][j][k]) data_err++;
  150.     }
  151.  
  152. /*    rslfp = fopen(rslfn, "w");e   */
  153.  
  154.     printf("          Orig'l SDG1/C SDG2/F        SDG3/F1  \n");
  155.     printf("    rank    %3d   %3d    %3d    rank   %3d \n",
  156.           rank, irank[0],irank[1],irank[2]);
  157.     printf("    dim1    %3d   %3d    %3d    dim1   %3d     \n",
  158.         di[0], idi[0][0],idi[1][0],idi[2][0]);
  159.     printf("    dim2    %3d   %3d    %3d    dim2   %3d     \n",
  160.             di[1], idi[0][1],idi[1][1],idi[2][1]);
  161.     printf("    dim3    %3d   %3d    %3d    dim3   %3d     \n",
  162.             di[2], idi[0][2],idi[1][2],idi[2][2]);
  163.     printf("dim1_sc1  %6.1f %6.1f %6.1f d1s1 %6.1f  \n", 
  164.             scpln[0], iscpln[0][0], iscpln[1][0], iscpln[2][0]);
  165.     printf("dim1_sc2  %6.1f %6.1f %6.1f d1s2 %6.1f  \n",
  166.             scpln[1], iscpln[0][1], iscpln[1][1], iscpln[2][1]);
  167.     printf("dim2_sc1  %6.1f %6.1f %6.1f d2s1 %6.1f  \n",
  168.             scrow[0], iscrow[0][0], iscrow[1][0], iscrow[2][0]);
  169.     printf("dim2_sc2  %6.1f %6.1f %6.1f d2s2 %6.1f  \n",
  170.             scrow[1], iscrow[0][1], iscrow[1][1], iscrow[2][1]);
  171.     printf("dim2_sc3  %6.1f %6.1f %6.1f d2s3 %6.1f  \n",
  172.             scrow[2], iscrow[0][2], iscrow[1][2], iscrow[2][2]);
  173.     printf("dim3_sc1  %6.1f %6.1f %6.1f d3s1 %6.1f  \n",
  174.             sccol[0], isccol[0][0], isccol[1][0], isccol[2][0]);
  175.     printf("dim3_sc2  %6.1f %6.1f %6.1f d3s2 %6.1f  \n",
  176.             sccol[1], isccol[0][1], isccol[1][1], isccol[2][1]);
  177.     printf("dim3_sc3  %6.1f %6.1f %6.1f d3s3 %6.1f  \n",
  178.             sccol[2], isccol[0][2], isccol[1][2], isccol[2][2]);
  179.     printf("dim3_sc4  %6.1f %6.1f %6.1f d3s4 %6.1f  \n",
  180.             sccol[3], isccol[0][3], isccol[1][3], isccol[2][3]);
  181.     printf(" maxi     %6.1f %6.1f %6.1f      %6.1f  \n",
  182.             maxi, imaxi[0], imaxi[1], imaxi[2]);
  183.     printf(" mini     %6.1f %6.1f %6.1f      %6.1f  \n",
  184.             mini, imini[0], imini[1], imini[2]);
  185.     printf("  l_dim1  %7s %6s %6s l_d1 %6.6s  \n",
  186.             lpln,il[0][0], il[1][0], il[2][0]);
  187.     printf("  l_dim2  %7s %6s %6s l_d2 %6.6s  \n",
  188.             lrow,il[0][1], il[1][1], il[2][1]);
  189.     printf("  l_dim3  %7s %6s %6s l_d3 %6.6s  \n",
  190.             lcol,il[0][2], il[1][2], il[2][2]);
  191.     printf("  u_dim1  %7s %6s %6s u_d1 %6.6s  \n",
  192.             upln,iu[0][0], iu[1][0], iu[2][0]);
  193.     printf("  u_dim2  %7s %6s %6s u_d2 %6.6s  \n",
  194.             urow,iu[0][1], iu[1][1], iu[2][1]);
  195.     printf("  u_dim3  %7s %6s %6s u_d3 %6.6s  \n",
  196.             ucol,iu[0][2], iu[1][2], iu[2][2], iu[3][2]);
  197.     printf("  f_dim1  %7s %6s %6s f_d1 %6.6s  \n",
  198.             fpln,ifm[0][0], ifm[1][0], ifm[2][0]);
  199.     printf("  f_dim2  %7s %6s %6s f_d2 %6.6s  \n",
  200.             frow,ifm[0][1], ifm[1][1], ifm[2][1]);
  201.     printf("  f_dim3  %7s %6s %6s f_d3 %6.6s  \n",
  202.             fcol,ifm[0][2], ifm[1][2], ifm[2][2]);
  203.     printf("Data: \n");
  204.     for (i=0;i<np; i++)
  205.     for (j=0; j<nr; j++)
  206.         for (k=0; k<nc; k++)        {
  207.              printf("da[i][j][k]%6.1f %6.1f %6.1f ",
  208.              da[i][j][k], ida[0][i][j][k], ida[1][i][j][k]);
  209.                printf("     %6.1f  \n", ida[2][i][j][k]); 
  210.             }
  211.     printf("\n\n");
  212.     printf(">>>> rs3: %d calls failed. >>>>>\n", abs(num_err));
  213.     printf(">>>> rs3: %d data wrong.  >>>>>\n\n\n", data_err);
  214.     exit(num_err);
  215.  
  216.  
  217. }
  218.  
  219.